package esmodel

type EsEntryModel struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index     string     `json:"_index"`
			Type      string     `json:"_type"`
			Id        string     `json:"_id"`
			Score     float64    `json:"_score"`
			Source    EntryModel `json:"_source"`
			Highlight struct {
				Title         []string `json:"Title"`
				Slug          []string `json:"Slug"`
				Excerpt       []string `json:"Excerpt"`
				SectionsTitle []string `json:"Sections.Title"`
				SectionsSlug  []string `json:"Sections.Slug"`
				BrandTitle    []string `json:"Brand.Title"`
				BrandSlug     []string `json:"Brand.Slug"`
				NoseTitle     []string `json:"Nose.Title"`
				NoseSlug      []string `json:"Nose.Slug"`
				NoteTitle     []string `json:"Note.Title"`
				NoteSlug      []string `json:"Note.Slug"`
			} `json:"highlight"`
		} `json:"hits"`
	} `json:"hits"`
}

type EsEntrySectionModel struct {
	Id    uint64 `json:"Id"`
	Title string `json:"Title"`
	Slug  string `json:"Slug"`
}

type EsEntryMetaModel struct {
	Key   string `json:"Key"`
	Value string `json:"Value"`
}

type EsEntryRelationModel struct {
	Id        uint64 `json:"Id"`
	Title     string `json:"Title"`
	Slug      string `json:"Slug"`
	SectionId uint64 `json:"SectionId"`
	GroupId   uint64 `json:"GroupId"`
}

type EntryModel struct {
	Id        uint64                 `json:"Id"`
	Title     string                 `json:"Title"`
	Slug      string                 `json:"Slug"`
	SectionId uint64                 `json:"SectionId"`
	Sections  []EsEntrySectionModel  `json:"Sections"`
	Meta      []EsEntryMetaModel     `json:"Meta"`
	Relations []EsEntryRelationModel `json:"Relations"`
}

type EsEntrySpecialModel struct {
	Id    uint64 `json:"Id"`
	Title string `json:"Title"`
	Slug  string `json:"Slug"`
}

type Entry struct {
	Id       uint64                `json:"Id"`
	Title    string                `json:"Title"`
	Slug     string                `json:"Slug"`
	Excerpt  string                `json:"Excerpt"`
	Year     uint64                `json:"Year"`
	Gender   uint64                `json:"Gender"`
	Sections []EsEntrySpecialModel `json:"Sections"`
	Brand    []EsEntrySpecialModel `json:"Brand"`
	Nose     []EsEntrySpecialModel `json:"Nose"`
	Note     []struct {
		EsEntrySpecialModel
		GroupId uint64 `json:"GroupId"`
	} `json:"Note"`
}

type Post struct {
	Id       uint64 `json:"Id"`
	Title    string `json:"Title"`
	Slug     string `json:"slug"`
	Excerpt  string `json:"Excerpt"`
	ParentId uint64 `json:"ParentId"`
}

type PostModel struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string  `json:"_index"`
			Type   string  `json:"_type"`
			Id     string  `json:"_id"`
			Score  float64 `json:"_score"`
			Source Post    `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}
